package acl.bussiness;



import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;


import acl.hibernate.dao.ACLdao;
import acl.hibernate.dao.Userdao;
import acl.hibernate.po.OaDepartments;
import acl.hibernate.po.OaUsers;
import acl.hibernate.po.UserView;

public class UserBusiness {
	public Logger logger = Logger.getLogger(this.getClass());
	ACLdao alcd= new ACLdao();
	Userdao userdao=new Userdao();
	public OaUsers aboutUser(String userName) throws Exception {// 根据用户名获取用户信息;
		return alcd.getUserByUserName(userName);
	}	
	@SuppressWarnings("unchecked")
	/*
	 * 根据部门id获取用户列表
	 */
	public List userList(Integer yxsh_id,Integer userId){
		return alcd.getUserListByXysh_id(yxsh_id,userId);		
	}		
	/*
	 * 根据id删除用户
	 * @param id 待删除的用户id
	 */
	public void deleteUserById(Integer id){//
		alcd.deleteUserById(id);
	}
	/*
	 * 根据id批量删除用户
	 * @param ids 待删除用户id数组
	 */
	public void deleteCheckedUserByIds(String[] ids){//
		alcd.deleteCheckedUserByIds(ids);
	}
	/*
	 * 根据id获取用户
	 * @param id 用户id
	 */
	public OaUsers getUserById(Integer id){//
		return alcd.getUserById(id);
	}
	/*
	 * 更新或保存用户信息
	 * 若用户是新用户，则需要验证用户名是否存在，若存在则不允许保存
	 * 若用户不是新用户，则不检验用户是否存在
	 * @param oaUsers 待保存的用户
	 */
	public boolean saveOrUpdateUser(OaUsers oaUsers){
		if(oaUsers==null||oaUsers.getUsername().equals(""))
		{
			logger.error("用户名不能为空，保存失败！");
			return false;
		}
		//若是新用户，需要检验用户名是否存在
		if(oaUsers.getId()==null||oaUsers.getId().equals(0))
		{
			if(isUserExist(oaUsers.getUsername())==true)//用户名已使用
			{
				logger.error("用户名已使用，保存失败！");
				return false;
			}
			oaUsers.setCreated((new Date()).toString());
		}
		else
			
		{
			oaUsers.setModified((new Date()).toString());
		}
		return userdao.saveOrupdate(oaUsers);
	}
	/*
	 * 验证用户是否存在
	 * @param userName 待验证的用户名
	 * @return 若同名用户存在，返回true，否则，返回false
	 */
	public boolean isUserExist(String userName)
	{
		List result=userdao.getUserByName(userName);
		if(result==null||result.size()==0)
			return false;
		else
		{
			logger.info("username "+userName+" has been existed!");
			return true;
		}
	}
	/*
	 * 验证用户是否可以登录
	 * @param userName 用户输入的用户名
	 * @param password 用户输入的密码
	 * @return 若用户名和密码正确，且userstate=1，返回true，否则返回false
	 */
	public boolean canLogin(String userName,String password)
	{
		boolean result=false;
		String strhql=" from OaUsers as o where o.userstate=1 and o.username='"+userName+"'"+" and o.password='"+password+"'";
		List l=userdao.find(strhql);
		if(l!=null&&l.size()>0)
			result=true;
		return result;
	}
	/*
	 * 获取所有用户
	 * 
	 */
	public List getAllUser()
	{
		List result=null;
		String strhql=" from OaUsers ";
		result=userdao.find(strhql);
		return result;
	}
	/*
	 * 按分页方式获取用户
	 * @param pageNO 起始页
	 * @param pageSize 每页数据量
	 */
	public List getUserByPage(int pageNo,int pageSize)
	{
		List result=null;
		result=userdao.query(pageNo, pageSize, "from OaUsers as o where o.userstate=1");
		return result;
	}
	public List searchUsersByKeys(String keys) {
		//根据条件查询用户信息
		// Author:Never
		return userdao.searchUsersByKeys(keys);
	}
	
	public  List searchUsersByKeys(String keys,String pageno,String pagesize) {
		//根据条件分页查询用户信息
		// Author:Never
		return userdao.searchUsersByKeys(keys,pageno,pagesize);
	}
}
